package co.gov.medellin.ssti.sub.model.service;

import java.util.Collection;

import co.gov.medellin.ssti.sub.model.vo.ProgramaVO;
import co.gov.medellin.ssti.sub.model.vo.RepAtributoVO;
import co.gov.medellin.ssti.sub.model.vo.RepBeneficioOtorgadoVO;
import co.gov.medellin.ssti.sub.model.vo.SubprogramaVO;
import co.gov.medellin.ssti.sub.model.vo.VflexVO;

public interface RepBeneficioOtorgadoService {
	/**
	 * 
	 * @param criteria
	 * @return
	 * 
	 */
	 Collection<RepBeneficioOtorgadoVO> findBeneficioOtorgadoByCriteria(
			RepBeneficioOtorgadoVO criteria);

	/**
	 * 
	 * @param criterea
	 * @return
	 * 
	 */
	 Collection<RepBeneficioOtorgadoVO> findBeneficioOtorgadoConGestorByCriteria(
			RepBeneficioOtorgadoVO criteria);

	/**
	 * 
	 * @param codeAtri
	 * @return
	 * 
	 */
	 Collection<VflexVO> findListaAtri(Long codeAtri);

	/**
	 * 
	 * @param codeSubprograma
	 * @return
	 * 
	 */
	 Collection<RepAtributoVO> findAtributoEspecificos(
			Long codeSubprograma);

	/**
	 * 
	 * @param codeUser
	 * @param userGroupName
	 * @param codeArea
	 * @return
	 * 
	 */
	 Collection<ProgramaVO> findProgramaByUserReport(Long codeUser,
			String userGroupName, Long codeArea);

	/**
	 * 
	 * @param codeUser
	 * @param userGroupName
	 * @param codeArea
	 * @return
	 * 
	 */
	 Collection<ProgramaVO> findProgramaWithGestorByUserReport(
			Long codeUser, String userGroupName, Long codeArea);

	/**
	 * 
	 * @param codeUser
	 * @param userGroupName
	 * @param codePrograma
	 * @param codeArea
	 * @return
	 * 
	 */
	 Collection<SubprogramaVO> findPermissionsReport(Long codeUser,
			String userGroupName, Long codePrograma, Long codeArea);

	/**
	 * Metodo para calcular los beneficios de un programa sin tener en cuenta la
	 * vigencia. RESP SUBPROGRAMADAO
	 * 
	 * @param codeUser
	 * @param userGroupName
	 * @param codeprograma
	 * @param codeArea
	 * @return
	 * 
	 */
	/*
	 *  Collection findSubProgramaByUserReport(Long codeUser, String
	 * userGroupName, String codeprograma, Long codeArea) ;
	 */

	/**
	 * RESP SUBPROGRAMADAO
	 * 
	 * @param codeUser
	 * @param userGroupName
	 * @param codeprograma
	 * @param codeArea
	 * @return
	 * 
	 */
	/*
	 * String userGroupName, String codeprograma, Long codeArea) throws
	 * DAOException;
	 */
}
